package com.hibegin.http.server.web;

import com.hibegin.http.server.impl.HttpRequest;
import com.hibegin.http.server.impl.HttpResponse;
import com.hibegin.http.server.util.HttpMethod;
import com.szwistar.common.ERR;

import java.io.File;

/**
 * 默认的 WebRoot 目录静态资源拦截器：如果没找到，返回 404
 * 尝试在静态 Web 资源路径中查找
 * 注意：此路径是通过 ServerConfig.setStaticPath() 配置的
 */
public class Interceptor4Default implements Interceptor {
    @Override
    public boolean doInterceptor(HttpRequest request, HttpResponse response) throws Exception {
        boolean headOnly = (request.getMethod() == HttpMethod.HEAD);

        // 如果请求的是路径，则返回默认主页
        String uri = request.getUri();
        if(uri.endsWith("/")) {
        	uri += request.getServerConfig().getWelcomeFile();
        }

        // 构建文件
        File file = new File(request.getRealPath() + uri);
        if (file.exists() && !file.isDirectory() || uri.contains(".")) {
            // 在请求路径中存在了. 认为其为文件
            response.renderFile(file, headOnly);
        }
        else {
        	// 没有匹配，返回 404
            response.renderCode(ERR.NOT_FOUND, request.getUri());
        }
        return false;
    }
}
